<?php

use app\model\JtkLocation;
use think\migration\Migrator;
use think\migration\db\Column;

class CreateJtkTable extends Migrator
{

    // 聚推客-- 周边游相关的表
    public function up()
    {
        // 站点信息
        $table = $this->table('jtk_location', ['id' => 'id',  'comment' => '聚推客站点信息']);
        if ($table->exists()) {
            $table->drop();
        }

        $table->addColumn('jtk_id', 'integer', ['default' => 0,'comment' => '聚推客站点id'])
            ->addColumn('jtk_pid', 'integer', ['default' => 0, 'comment' => '聚推客父ID'])
            ->addColumn('city', 'string', ['limit' => 32, 'default' => '', 'comment' => '站点名称'])
            ->addColumn('city_code', 'string', ['limit' => 32, 'default' => '', 'comment' => '城市编码'])
            ->addColumn('first_word', 'string', ['limit' => 15, 'default' => '', 'comment' => '首字母'])
            ->addIndex('city_code',['name' => 'idx_city_code'])
            ->create();

        // 商品信息
        $table = $this->table('jtk_goods', ['id' => 'id', 'comment' => '商品信息']);
        if ($table->exists()) {
            $table->drop();
        }

        // 注意:表名的字段 如果是根据聚推客的字段驼峰转下划线，保存数据时，代码会自动取聚推客的值 如 location_id =》聚推客 locationId
        $table ->addColumn('jtk_goods_id', 'integer', ['default' => 0, 'comment' => '聚推客产品id 即商品id'])
            ->addColumn('location_id', 'integer', ['default' => 0, 'comment' => '站点id'])
            ->addColumn('only_name', 'string', ['default' => '', 'comment' => '产品名称'])
            ->addColumn('product_title', 'string', ['default' => 0, 'comment' => '产品主标题(前端给客户展示)'])
            ->addColumn('title', 'string', ['default' => 0, 'comment' => '产品标题(管理后端展示)'])
            ->addColumn('face_img', 'text', ['null' => true, 'comment' => '封面图片'])
            ->addColumn('channel_sale_amount', 'integer', ['default' => 0, 'comment' => '渠道销量'])
            ->addColumn('begin_time', 'string', ['default' => '', 'comment' => '抢购开始时间'])
            ->addColumn('end_time', 'string', ['default' => '', 'comment' => '抢购结束时间'])
            ->addColumn('is_sold_out', 'integer', ['default' => 0, 'comment' => '是否售罄，1：售罄，0未售罄'])
            ->addColumn('order_show_id_card', 'integer', ['default' => 0, 'comment' => '是否需要填写身份证号 默认为0:否 默认过滤掉'])
            ->addColumn('booking_show_address', 'integer', ['default' => 0, 'comment' => '是否需要填写配送地址 默认为0:否 默认过滤掉'])
            ->addColumn('order_show_date', 'integer', ['default' => 0, 'comment' => '是否需要填写使用日期 默认为0:否 默认过滤掉'])
            ->addColumn('city', 'string', ['default' => '', 'comment' => '站点名称'])
            ->addColumn('cityCode', 'string', ['default' => '', 'comment' => '城市编码'])
            ->addColumn('items', 'json', ['null' => true, 'comment' => '对应产品的套餐列表'])
            ->addColumn('shops', 'json', ['null' => true,'comment' => '商家列表 所有经纬度采用 腾讯坐标系'])
            ->addColumn('category_name', 'string', ['default' => '', 'comment' => '产品分类名称'])
            ->addColumn('product_category_id', 'string', ['default' => '', 'comment' => '产品分类id'])
            ->addColumn('release_time', 'string', ['default' => '', 'comment' => '产品上线时间'])
            ->addColumn('ext_data', 'json', ['null' => true, 'comment' => '拓展信息'])
            ->addColumn("deleted_at","datetime",['null' => true,'comment'=>"删除时间"])
            ->addTimestamps('created_at','updated_at') // 默认生成 created_time
            ->addIndex('location_id',['name' => 'idx_location_id'])
            ->addIndex('jtk_goods_id',['name' => 'idx_jtk_goods_id'])
            ->create();

        // 商品信息
        $table = $this->table('jtk_goods_shop', ['id' => 'id', 'comment' => '商品商家门店信息']);
        if ($table->exists()) {
            $table->drop();
        }

        $table->addColumn('jtk_goods_id', 'integer', ['default' => 0, 'comment' => '聚推客产品id 即商品id'])
            ->addColumn('location_id', 'integer', ['default' => 0, 'comment' => '站点id'])
            ->addColumn('name', 'string', ['default' => '', 'comment' => '商家名称'])
            ->addColumn('latitude', 'string', ['default' => '', 'comment' => '纬度'])
            ->addColumn('longitude', 'string', ['default' => '', 'comment' => '经度'])
            ->create();

        // 保存站点
        JtkLocation::saveLocationData();

    }

    public function down()
    {
        $this->table('jtk_location')->drop();
        $this->table('jtk_goods')->drop();
        $this->table('jtk_goods_shop')->drop();

    }
}
